package com.oceansoft.mobile.econsole.modules.api.service;

import com.alibaba.fastjson.JSONObject;
import com.oceansoft.mobile.econsole.modules.ascproject.entity.MydEvaluation;
import com.oceansoft.mobile.econsole.modules.base.entity.Query;
import com.oceansoft.mobile.econsole.modules.base.entity.Result;

import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;

import java.io.File;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.Map;

/**
 * Description
 *
 * @author: chenw
 * @time: 2014-6-18 0018 下午 17:46
 */
public interface IMattersService {

    Result loadAllPoliceCatalog() throws IOException;
    Result loadAllPoliceCatalogAll() throws IOException;


    /**
     * 加载苏州市局及全部分局信息
     *
     * @return Result
     */
    Result loadAllBureau() throws IOException;

    /**
     * 加载市局及分局科室信息
     *
     * @param bureauId 一级部门ID
     * @return Result
     */
    Result loadDepartments(String bureauId) throws IOException;
    /**
     * @param deptId        部门ID
     * @param policeCatalog 警种分类
     * @param pageIndex     当前页
     * @param keywords      搜索关键词
     * @return Result
     */

    /**
     * 加载事项详细信息
     *
     * @param deptType 部门类型 1:市局 2：分局
     * @param deptId   部门编号
     * @param matterId 事项编号
     * @return Result
     */
    Result loadMatterDetail(int deptType, String deptId, String matterId);

    Result loadMattersByCondition(Map<String, String> params) throws IOException;

    /**
     * 获取分局下所有派出所
     *
     * @param bureauId 分局id
     * @return Result
     */
    Result loadPoliceStations(String bureauId) throws IOException;

    /**
     * 所有预约列表
     *
     * @param params 预约参数
     * @return Result
     */
    Result loadAppointmentPage(Map<String, String> params) throws IOException;

    /**
     * 根据办件编号查询办件进度
     *
     * @param proid 办件编号
     * @return Result
     */
    Result loadDoScheduleDetail(String proid) throws IOException;


    /**
     * 根据办件编号查询办件进度
     *
     * @param proid 办件编号
     * @return Result
     */
    Result wsScheduleDetail(String proid) throws IOException;



    /**
     * 根据身份证号查询办理进度
     *
     * @param idnum 身份证号
     * @return Result
     */
    Result loadPermitScheduleDetail(String idnum) throws IOException;

    /**
     * 根据街道名称和社区名称查询居住证办理地点
     *
     * @param jdmc 街道名称
     * @param sqmc 社区名称
     * @return Result
     */
    Result loadPermitSiteDetail(String jdmc, String sqmc) throws IOException;

    /**
     * 根据身份证号和受理编号查询身份证办理进度
     *
     * @param idnum  身份证号
     * @param caseid 受理编号
     * @return Result
     */
    Result loadIdCardScheduleDetail(String idnum) throws IOException;

    /**
     * 根据身份证号和接警编号查询案件信息
     *
     * @param idnum  身份证号
     * @param lawnum 接警编号
     * @return Result
     */
    Result loadCaseDetail(String idnum, String lawnum) throws IOException;

    /**
     * 货车通行证提交申报
     *
     * @param truckReport 申报实体
     * @return Result
     */
    Result submitTruckReport(JSONObject truckReport);

    /**
     * 律师提交申报 公安阶段
     *
     * @param lawyerReport 申报数据
     * @return Result
     */
    Result submitLawyerReport(JSONObject lawyerReport) throws IOException;

    /**
     * 提交出入境预约
     *
     * @param bespeak 预约实体
     * @return Result
     */
    Result submitBespeakExist(JSONObject bespeak) throws IOException;

    /**
     * 提交特警项目
     *
     * @param bespeak 预约实体
     * @return Result
     */
    Result submitBespeakPolice(JSONObject bespeak) throws IOException;

    /**
     * 咨询列表
     *
     * @param params 参数
     * @return Result
     */
    Result loadConsultList(Map<String, String> params) throws IOException;

    /**
     * 问题回答
     *
     * @param qid 问题
     * @return Result
     */
    Result loadAnswer(String qid) throws IOException;

    /**
     * 提交咨询问题
     *
     * @param question 问题
     * @return Result
     */
    Result submitQuestion(JSONObject question) throws IOException;

    Result askQuestion(JSONObject question);

    /**
     * 货车通行证查询
     *
     * @param permitNo   通行证编号
     * @param permitCode 通行证唯一吗
     * @param permitPsd  通行证密码
     * @return Result
     */
    Result loadTruckPermitInfo(String permitNo, String permitCode, String permitPsd) throws IOException;

    /**
     * 临时通行证查询
     *
     * @param permitCode 通行证唯一吗
     * @return Result
     */
    Result loadInterimPermitInfo(String permitCode) throws IOException;

    /**
     * 根据派出所id查询警务室列表
     *
     * @param pid 派出所id
     * @return Result
     */
    Result loadPoliceOfficeByStation(String pid) throws IOException;

    /**
     * 根据警务室id查询警务室信息
     *
     * @param alarmId 警务室id
     * @return Result
     */
    Result loadAlarmRoomInfo(String alarmId) throws IOException;

    /**
     * 根据警务室名称查询警务室信息
     *
     * @param alarmName 警务室名称
     * @return Result
     */
    Result loadAlarmRoomInfoByName(String alarmName) throws IOException;

    /**
     * 发送短信
     */
    Result sendMsg(JSONObject bespeak) throws IOException;

    /**
     * 发送短信
     */
    Result sendMsg(String tel, String msg) throws IOException;

    /**
     * 办件列表
     *
     * @param params 参数
     * @return Result
     */
    Result myProject(Map<String, String> params) throws IOException;

    /**
     * 满意度
     *
     * @return
     */
    Result projectMyd(JSONObject bespeak) throws IOException;

    /**
     * 满意度v2
     *
     * @return
     */
    Result projectMyd(MydEvaluation mydEvaluation);

    /**
     * 办件详细信息
     *
     * @param bespeak 办件查询参数
     * @return Result
     */
    Result undoProject(JSONObject bespeak) throws IOException;

    /**
     * 办件撤销
     *
     * @param prjid 办件序号
     * @param type  -1 市局 2分局
     * @return Result
     */
    Result projectDetail(String prjid, String type) throws IOException;

    /**
     * 加载预约指南
     *
     * @param matterId   事项ID
     * @param policeType 警种分类
     * @return Result
     */
    Result loadReservationGuid(String matterId, int policeType);

    /**
     * 获取运载大队接口
     *
     * @return
     */
    Result loadPassportYZDD() throws IOException;

    /**
     * 获取运载物品接口
     *
     * @return
     */
    Result loadPassportYZWP() throws IOException;

    /**
     * 保存通信证信息
     */
    Result savePassport(JSONObject passport) throws IOException;

    /**
     * 保存线路信息
     */
    Result saveLine(JSONObject line) throws IOException;

    /**
     * 需要上传的文件信息
     */
    Result getPassportFiles() throws IOException;
    
    /**
     * 具体事项申报材料列表
     */
    Result loadApplyMataer(String caseId,String type) throws IOException;

    /**
     * 具体事项设计依据表
     */
    Result loadCaseBasis(String caseId) throws IOException;
    /**
     * 律师会见通知
     * @param obj
     * @return
     */
    Result loadLawyerMeetInfo (JSONObject obj) throws IOException;
    
    /**
     * 预约提交
     * @param obj
     * @return
     * @throws IOException
     */
    Result loadLawyerMeetAppointSub (JSONObject obj) throws IOException;
    
    
    /**
     * 上传律师材料
     *
     * @param request MultipartHttpServletRequest
     * @return Result
     */
    Result uploadLawyerMeterial(MultipartHttpServletRequest request) throws IOException;
    
    
    
    /**
     * 上传通行证文件
     *
     * @return
     */
    Result uploadPassportFiles(File file, String materialGuid, String userGuid, String caseGuid, String projectGuid) throws Exception;

    Result savePassportPhoto(String localHostIP, String userId, String photoGuid, MultipartFile file) throws Exception;

    Result savePassportFile(JSONObject obj) throws UnsupportedEncodingException;

    Result reportVehicleTempPassportInfo(JSONObject passportInfo, JSONObject lineInfo, JSONObject caseInfo, JSONObject filesInfo) throws IOException;

    Result loadConsultByPage(Query query, String userName);

    Result jbloadConsultByPage(Query query, String userGuid);

    Result jbinfo(String guid)throws IOException ;


}
